In [101]:
import os
import librosa
import librosa.display
import IPython.display as ipd
import numpy as np
import matplotlib.pyplot as plt
FRAME_SIZE=1024
HOP_SIZE=128
birds = [["Barred Owl", "barred_owl.mp3"],
["Northern Cardinal", "northern_cardinal.mp3"],
["Wood Thrush", "wood_thrush.mp3"]
]
In [102]:
def plot_spectrogram(title, file, frame_size=FRAME_SIZE, hop_length=HOP_SIZE, y_axis="log"):
signal, sr = librosa.load(file,duration=10)
fourier = librosa.stft(signal, n_fft=frame_size, hop_length=hop_length)
Y = librosa.power_to_db(np.abs(fourier)**2, amin=1)
plt.figure(figsize=(25, 10))
librosa.display.specshow(Y,
sr=sr,
hop_length=hop_length,
x_axis="time",
y_axis=y_axis)
plt.colorbar(format="%+2.f")
plt.suptitle(title)
plt.savefig(os.path.splitext(file)[0]+".png")
In [103]:
plot_spectrogram(birds[0][0], birds[0][1])
ipd.Audio(birds[0][1])
Out[103]:
In [104]:
plot_spectrogram(birds[1][0], birds[1][1])
ipd.Audio(birds[1][1])
Out[104]:
In [105]:
plot_spectrogram(birds[2][0], birds[2][1])
ipd.Audio(birds[2][1])
Out[105]: